﻿Imports CapaLogica.CL.Foro
Imports CapaLogica.CL.UtilidadesGenerales
Imports System.Threading


Public Class AdministracionForo


    Inherits System.Web.UI.Page


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        seguridadPagina()

        Try
            Dim idForo As Integer = CType(Session("AFIdForo"), Integer)

            If IsPostBack = False Then

                Session.Add("AFIdForo", CInt(Request("id_foro")))

                Dim datosForo As Dictionary(Of String, Object) = GestorForo.consultarForo(CType(Session("AFIdForo"), Integer))
                lblForo.Text = "Foro:" & " " & CType(datosForo("nombre"), String)


                lbxEstudiantes.DataSource = estudiantesNoExpulsados()
                lbxEstudiantes.DataValueField = "IdInfo"
                lbxEstudiantes.DataTextField = "Informacion"
                lbxEstudiantes.DataBind()

                lbxEstudiantesExpulsados.DataSource = estudiantesExpulsados()
                lbxEstudiantesExpulsados.DataValueField = "IdInfo"
                lbxEstudiantesExpulsados.DataTextField = "Informacion"
                lbxEstudiantesExpulsados.DataBind()
            End If
        Catch ex As Exception
            Seguridad.redirigirPorError("Ocurrio un error a la hora de administrar el foro", Response)
        End Try


    End Sub


    Private Sub seguridadPagina()

        If Session("id") Is Nothing Then
            Response.Redirect("Login.aspx")
        End If

        If Session("rol") = "1" Then
            Response.Redirect("Inicio.aspx")
        End If

        Try
            If Request("id_foro") Is Nothing And Session("AFIdForo") Is Nothing Then
                redirigirPorError()
            End If


            If Request("id_foro") Is Nothing Then
                If Seguridad.validarSiEsDuenioForo(CType(Session("id"), Integer), CType(Session("AFIdForo"), Integer)) = False Then
                    redirigirPorError()
                End If
            Else
                If Seguridad.validarSiEsDuenioForo(CType(Session("id"), Integer), CType(Request("id_foro"), Integer)) = False Then
                    redirigirPorError()
                End If

            End If
        Catch es As ThreadAbortException
            redirigirPorError()
        Catch ex As Exception
            Seguridad.redirigirPorError("Ocurrio un error a la hora de administrar el foro", Response)

        End Try
    End Sub


    Private Sub redirigirPorError()
        Response.Redirect("Inicio.aspx")
    End Sub

    Public Function estudiantesNoExpulsados() As List(Of Informacion)
        Try
            Dim estudiantes As List(Of Informacion) = GestorForo.listarEstudiantesNoExpulsados(CType(Session("AFIdForo"), Integer))
            Return estudiantes
        Catch ex As Exception
            Seguridad.redirigirPorError("Ocurrio un error a la hora de cargar los estudiantes no expulsados", Response)
        End Try

    End Function

    Public Function estudiantesExpulsados() As List(Of Informacion)
        Try
            Dim estudiantes As List(Of Informacion) = GestorForo.listarEstudiantesExpulsadosForo(CType(Session("AFIdForo"), Integer))

            Return estudiantes
        Catch ex As Exception
            Seguridad.redirigirPorError("Ocurrio un error a la hora cargar los estudiantes expulsados", Response)
        End Try

    End Function


    Protected Sub btnExpulsar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnExpulsar.Click
        Try
            Dim idEstudiante As Integer = CType(lbxEstudiantes.SelectedValue, Integer)
            Dim justificacion As String = txtJustificacion.Text

            GestorForo.expulsarEstudiante(CType(Session("AFIdForo"), Integer), idEstudiante, justificacion)
            Response.Redirect("AdministracionForo.aspx?id_foro=" & CType(Session("AFIdForo"), Integer))
        Catch es As ThreadAbortException
            Response.Redirect("AdministracionForo.aspx?id_foro=" & CType(Session("AFIdForo"), Integer))
        Catch ex As Exception
            Seguridad.redirigirPorError("Ocurrio un error a la hora de expulsar el estudiante.", Response)
        End Try



    End Sub

    Protected Sub lbxEstudiantesExpulsados_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles lbxEstudiantesExpulsados.SelectedIndexChanged
        Try
            txtJustificacionExpulsados.Text = GestorForo.justificacionExpulsion(CType(Session("AFIdForo"), Integer), CType(lbxEstudiantesExpulsados.SelectedValue, Integer))

        Catch ex As Exception
            Seguridad.redirigirPorError("Ocurrio un error a la hora de expulsar el estudiante.", Response)
        End Try

    End Sub

    Protected Sub btnAnular_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAnular.Click
        Try
            Dim idEstudiante As Integer = CType(lbxEstudiantesExpulsados.SelectedValue, Integer)
            GestorForo.anularExpulcionEstudiante(CType(Session("AFIdForo"), Integer), idEstudiante)
            Response.Redirect("AdministracionForo.aspx?id_foro=" & CType(Session("AFIdForo"), Integer))

        Catch es As ThreadAbortException
            Response.Redirect("AdministracionForo.aspx?id_foro=" & CType(Session("AFIdForo"), Integer))
        Catch ex As Exception
            Seguridad.redirigirPorError("Ocurrio un error a la hora de anular la expulsión del estudiante.", Response)
        End Try



    End Sub
End Class